Transmission Control Protocol/Internet Protocol (TCP/IP) data transport is designed to be “self-clocking”, i.e., the faster a receiver can accept data, the faster it can be sent. However, this goal can be difficult to achieve in some network configurations and conditions. Current research has focused on two main areas. One of these areas concerns the problems associated with so-called “Long Fat Networks” (LFNs), where the challenge is to grow the TCP congestion window (cwnd) large enough and stably enough to permit full bandwidth utilization. The other area concerns the problems associated with asymmetric networks which exhibit different bandwidth and/or reliability metrics between uplinks and downlinks, such as are typically found in cable or digital subscriber line (DSL) and wireless networks.
The mechanism used by TCP/IP to achieve self-clocking data flow is through the processing of messages that acknowledge the reception of transmitted packets (ACKs). ACKs may be separate packets or may be piggybacked on reverse traffic packets. Ultimately, the rate at which data can be passed between two communicating parties over a TCP/IP connection is governed by the rate at which they can generate and consume ACKs generated by their partner.